﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Tecnosop.Dominio.Validadores;
using System.Web.Mvc;
using Tecnosop.Dominio;

namespace Tecnosop.WebUI.Models
{
    public class Cotizaciones
    {
        public IEnumerable<COTIZACION_CONVENIO> CotizacionesConvenio { get; set; }
        public IEnumerable<COTIZACION_VENTA_DIRECTA> CotizacionesVentaDirecta { get; set; }
    }

    public class CotizacionViewModel
    {
        //[DisplayName("Número de cotización")]
        //[ScaffoldColumn(false)]
        //public int NUMERO_COTIZACION { get; set; }

        [DisplayName("Rut cliente")]
        //[Required(ErrorMessage = " Ingrese el rut del cliente")]
        [RegularExpression(@"\d{1,10}[-][0-9kK]{1}$", ErrorMessage = "El rut ingresado no es correcto")]
        [RutValidator(Nullable: true, ErrorMessage = "El dígito verificador es incorrecto")]
        //[Remote("VerificarRut", "Cotizaciones", ErrorMessage = "No existe ningún cliente registrado con el rut ingresado.")]
        public string RUT_CLIENTE { get; set; }

        [DisplayName("Fecha de cotización")]
        [Required(ErrorMessage = " Ingrese la fecha de la cotización")]
        public DateTime FECHA_COTIZACION { get; set; }

        [DisplayName("Total")]
        //[DataType(DataType.Currency)]
        public Nullable<int> TOTAL_COTIZACION { get; set; }

        [DisplayName("Alcances de la cotización")]
        [DataType(System.ComponentModel.DataAnnotations.DataType.Text)]
        [MaxLength(512, ErrorMessage = "512 carácteres máximo")]
        public string Alcances { get; set; }
    }

    //public class CotizacionVDViewModel
    //{
    //    [DisplayName("Rut cliente")]
    //    [RegularExpression(@"\d{1,10}[-][0-9kK]{1}$", ErrorMessage = "El rut ingresado no es correcto")]
    //    [RutValidator(Nullable: true, ErrorMessage = "El dígito verificador es incorrecto")]
    //    public string RUT_CLIENTE { get; set; }

    //    [DisplayName("Fecha de cotización")]
    //    [Required(ErrorMessage = " Ingrese la fecha de la cotización")]
    //    public DateTime FECHA_COTIZACION { get; set; }

    //    [DisplayName("Total")]
    //    public Nullable<int> TOTAL_COTIZACION { get; set; }
    //}

    public class EditCotizacionVentaDirectaViewModel
    {
        [HiddenInput(DisplayValue = true)]
        [DisplayName("Número de cotización")]
        public int NUMERO_COTIZACION { get; set; }

        //[HiddenInput(DisplayValue = true)]
        [DisplayName("Rut cliente")]
        [RutValidator(ErrorMessage = "El dígito verificador es incorrecto")]
        public string RUT_CLIENTE { get; set; }

        [DisplayName("Fecha de cotización")]
        [Required(ErrorMessage = " Ingrese la fecha de la cotización")]
        public DateTime FECHA_COTIZACION { get; set; }

        [DisplayName("Total")]
        public Nullable<int> TOTAL_COTIZACION { get; set; }

        //public IEnumerable<DETALLE_COTIZACION_VENTA_DIRECTA> DETALLE_COTIZACION_VENTA_DIRECTA { get; set; }
    }

    public class FormasDePagoCotizacionViewModel
    {
        public int NUMERO_COTIZACION { get; set; }

        public bool HayCargoFijo { get; set; }
        public int PrecioCargoFijo { get; set; }

        public bool HayMinimoGarantizadoBlancoYNegro { get; set; }
        public int PrecioMinGBlancoyNegro { get; set; }
        public int PrecioHojaBlancoynegro { get; set; }

        public bool HayMinimoGarantizadoColor { get; set; }
        public int PrecioMinGColor { get; set; }
        public int PrecioHojaColor { get; set; }
    }

    public class FormasDePagoVISTAViewModel
    {
        public int NUMERO_COTIZACION { get; set; }
       
        public IEnumerable<FORMA_DE_PAGO_COTIZACION> FormasDePago { get; set; }
    }

    public class BusquedaCotizacionViewModel
    {
        [DisplayName("Criterios de búsqueda")]
        [UIHint("Enum")]
        [DataType("Criterios")]
        public CriteriosDeBusquedaCotizacion Criterios { get; set; }

        [Required(ErrorMessage = "Debe ingresar algún término para la búsqueda")]
        [Remote("ValidaBusquedaVacia", "Cotizaciones", AdditionalFields = "Criterios")]
        public string AreaBusqueda { get; set; }
    }

    class ResultadoBusquedaCotizacionViewModel
	{
        public IEnumerable<COTIZACION_CONVENIO> Resultado { get; set; }
        public string CriterioParaOrdenar { get; set; }	
	}

    public enum CriteriosDeBusquedaCotizacion
	{
        [Description("Correlativo cotización")]
	    ID,
        Rut,
        [Description("Nombre cliente")]
        Nombre
	}
}
